from django import forms
import re

from apps.operation.models import UserAsk

class AddAskForm(forms.ModelForm):
    # 由于 models 里边没有提供限制字段最小值，所以需要重写 mobile 字段，并添加 最大/最小长度限制
    mobile = forms.CharField(max_length=11, min_length=11, required=True)
    class Meta:
        model = UserAsk  # 继承 UserAsk 数据表的字段
        fields = ['name', 'mobile', 'course_name']  # 指定要将那些字段生成 forms，因为我们只想要这三个字段被检验而已，而UserAsk 继承了 base

    def clean_mobile(self):
        '''
        对手机号码进行验证
        :return:
        '''
        mobile = self.data.get('mobile')
        # mobile = self.cleaned_data['mobile']
        regex_mobile = '^1[358]\d{9}$|^147\d{8}$|^176\d{8}$'
        p = re.compile(regex_mobile)
        if p.match(mobile):
            return mobile
        else:
            raise forms.ValidationError('手机号码非法', code='mobile.invalid')
